<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="36-13-手写Promise-then回调函数的异步执行.js"></script>
</head>

<body>
    <script>

        let p = new Promise((res,rej)=>{
            console.log("ok");
            res('结果')
        })

        let p2 = p.then(val=>{
            console.log("then");
            console.log(val);
        },rea=>{
            console.log(rea);
        })

        console.log("end");


        // let p = Promise.resolve('ok');

        // let p = Promise.resolve(new Promise((res,rej)=>{
        //     // res('okk')
        //     rej('error')
        // }))

        // console.log(p);

        // let p = Promise.reject(new Promise((res,rej)=>{
        //     res('成功')
        // }));

        // console.log(p);

        
        //  let p = new Promise((res,rej)=>{
        //     // res('ok')
        //     rej('error')
        //     // throw '错误'
        //     // setTimeout(() => {
        //     //     res('成功了')
        //     //     // rej('失败了')
        //     // }, 100);
        //  })

        //  console.log(p);

        // //  p.then(undefined,rea=>{
        // //      console.log(rea);
        // //  })

        //  p.catch(rea=>{
        //      console.log(rea);
        //  })



        //  p.then(val=>{
        //      console.log('成功',val);
        //  })

        // p.then(null,rea=>{
        //     console.log('失败',rea);
        // })
        // .then(val=>{
        //     console.log(val);
        // })

        // p.then(val=>{
        //     console.log(val);
        // })
        // .then(val=>{
        //     console.log(val);
        // },rea=>{
        //     console.log(rea);
        // })


        //  let p2 = p.then(val=>{
        //      console.log('成功',val);
        //     //  非promise - 成功 、结果值：[1,2,3]
        //      return [1,2,3];

        //     // promise对象 - 根据返回的promise状态及结果决定
        //     // return new Promise((res,rej)=>{
        //     //     res('success')
        //     //     // rej('失败了')
        //     // })

        //     // throw '错误'

        //  },rea=>{
        //      console.log('失败',rea);

        //     //  return 123;
        //     // return new Promise((res,rej)=>{
        //     //     // res('okk')
        //     //     rej('err')
        //     // })
        //     throw '错了'
        //  });

        //  console.log(p2);

        //  p.then(val=>{
        //      console.log('成功2',val);
        //  },rea=>{
        //      console.log('失败2',rea);
        //  })

        //  p.then(val=>{

        //  },rea=>{

        //  })
    </script>
</body>

</html>